For color digital imaging systems, each step of the imaging chain (original scene, image capture, image storage, image transmission, soft display, hard copy display, etc.) will, in general, have different device-dependent color spaces, as well as different color gamuts. The term color gamut is generally used to refer to the range of colors which can be represented and/or displayed at some particular stage in the system. The color gamut of a display device may be quite different from the gamut of the image capture device and/or the gamut of colors in some original real world scene. Additionally, the gamut of colors which can be displayed with one device may be substantially different from the color gamut of some other device. For example, consider FIG. 1 which illustrates the color gamut of a typical RGB color video monitor, as compared to the gamut of a Kodak XL7700 color printer. The plot shows a slice through the gamuts in CIELAB color space at a lightness value of L*=50.0. The area of overlap for the two gamuts indicates the colors which can be produced on both devices. The regions that are inside only one of the curves represent colors that can be produced on one device, but not on the other. The color values that are outside both curves cannot be produced by either device. For this example, it can be seen that the video monitor can produce much more saturated blues than the thermal printer at this lightness level. The thermal printer, on the other hand, can produce more saturated yellows.
In many applications, it is necessary to take color image data which exists in a color space for one specific device, and transform it onto a color space for a different device. Because of the differences in the color spaces and the color gamuts of the various devices, several problems arise in this process. The first one is the matter of color calibration. That is, how do you specify the color on one device so that the perceived color matches that of another device? For example, one might have an image which is displayed on a video monitor and desire to create a print with the same perceived color reproduction. This problem is essentially one of transforming from one device-dependent color space to another. In the example just given, this would involve transforming from the monitor RGB space to the printer CMY(K) space. If all of the colors in the image are in the overlap region of the two color gamuts then this transformation is relatively straightforward and can be done using techniques such as multi-dimensional look-up-tables (see: W. F. Schreiber, "Color Reproduction System," U.S. Pat. No. 4,500,919, Feb. 19, 1985).
However, if some of the colors in the input color space are outside of the gamut of the output color space the problem is somewhat more complicated. The question then becomes what should be done with the out-of-gamut colors. Several different methods to handle this problem have been suggested in the past. Some of the more common approaches have been to maintain the hue angle and lightness for the out-of-gamut colors and clip the saturation to the gamut boundary, or to somehow compress the gamut so that the colors in the input image fit within the output color gamut (for example, see: R. S. Gentile, E. Walowit and J. P. Allebach, "A comparison of techniques for color gamut mismatch compensation," J. Imaging Technol. 16, 176-181 (1990)). FIGS. 2 and 3 illustrate the color errors which are introduced by clipping the saturation to the gamut boundary for the case of printing a video RGB image on a Kodak XL7700 thermal printer. FIG. 2 represents a horizontal plane in CIELAB space at a L* value of 65. FIG. 3 represents a vertical plane in CIELAB space at a hue angle of 330.degree. (at this hue angle Green is to the left and Magenta is to the right). The tails of the vectors indicate the input color on the video monitor, and the heads of the vectors (which have the diamond symbols) indicate the color which is produced by the printer. The gamut boundaries for the monitor and the printer are also indicated on the graphs. For this example, the white point for the calculation of the CIELAB color values was taken to be the R=G=B=255point for the monitor (which was color-balanced for D65), and paper white with the D65 illuminant for the printer. It can be seen from FIGS. 2 and 3 that colors which are in the overlap region of the two gamuts are reproduced with the same CIELAB coordinates to within the quantization limits of the devices. Colors outside the printer gamut are clipped to the gamut boundary, preserving both hue angle and lightness. Some classes of images, such as photographic scenes, contain very few out-of-gamut colors. As a result, the saturation clipping approach may yield quite acceptable results when applied to these images. However, for other classes of images, such as computer generated presentation graphics, a large percentage of the colors may be outside the output gamut. This is due to the fact that saturated colors are very appealing for many kinds of graphics such as pie charts, etc. For these types of images, using an approach which clips the saturation, or compresses the gamut, may yield quite unacceptable results due to the fact that the resulting images will be noticeably lower in saturation (i.e., the colors will appear to be more pastel, and less vibrant). Consequently, different techniques are necessary to transform the input color gamut into the output color space. Since this process usually involves modifying the colors in the image, rather than simply matching the colors from one device to another, this falls into the category of "color enhancement."
A principle reason for the mismatch in the gamut shapes for different devices is related to the difference in the primary colors of the devices. For example, the Blue "primary" of a printer (made by overlapping the Cyan and Magenta colorants) may have a very different lightness, saturation and even hue than the Blue phosphor of a video monitor. The term "primary color" is used loosely here to include the two-color combinations, as well as the single color device primaries. For a video monitor, the primary colors will be the Red, Green, and Blue single phosphor colors, as well as two phosphor combinations giving Cyan (Green plus Blue), Magenta (Red plus Blue), and Yellow (Red plus Green). For a subtractive color device, such as a thermal printer, the primary colors will be taken to be the Cyan, Magenta, and Yellow colorants, as well as the two colorant combinations giving Red (Magenta plus Yellow), Green (Cyan plus Yellow), and Blue (Cyan plus Magenta).
One approach to solving the gamut mismatch problem is to remap the colors in such a way that the primary colors of the input device will transform to the primary colors of the output device. This insures that the saturated colors on the first device are reproduced with the largest possible saturation on the second device even though the hue and/or lightness may be slightly different. The conventional approach to accomplish this is to make the amount of the colorants for the second device a simple function of the corresponding colorants of the first device, e.g., Cyan for the printer would be a function of the Red component of the monitor color. This is illustrated in FIG. 4. In practice, the functional dependence is usually implemented using three one-dimensional look-up tables. The actual form of the transforming function can be specified to perform some degree of tone-scale correction. One example of a transforming function is of the form: EQU C=(1-R.sup..gamma.), M=(1-G.sup..gamma.), Y=(1-B.sup..gamma.)(1)
where .gamma. is a parameter which can be used to adjust the image contrast. Color error maps corresponding to this approach are shown in FIGS. 5 and 6. It can be seen that, as expected, the saturated monitor colors have been transformed to the saturated printer colors. In fact, this approach will exactly transform the gamut of the first device into that of the second device. It has the disadvantage, however, that there are very few degrees of freedom available to make any adjustments to the color transforming. In general, if the function which determines the amount of the Cyan colorant is changed, colors within the entire color gamut will be affected. It is therefore not possible to change the tone reproduction of the Green colors without affecting the color reproduction of the Blue colors, etc. Although this approach does have the desired result of producing images with more saturated colors, it is not possible, in general, to determine a transformation which will have optimum results for all parts of color space. More degrees of freedom can be included in the system by adding interaction between the color channels using matrices, etc. (for example, see: Robert P. Collette, "Color and tone scale calibration system for a printer using electronically-generated input images," U.S. Pat. No. 5,081,529, Jan. 14, 1992), but with these approaches it is still not possible to localize corrections to the color reproduction with any high degree of flexibility.
A more robust approach would be to generate a multi-dimensional color-transforming function which transforms the coordinates of the input space into those of the output space. The amount of Cyan colorant for a printer would then be a function of all of the color channels of the input device. Such an approach has the advantage that it is possible to have "knobs" to adjust the appearance of certain colors without affecting other colors. Additionally, it is possible to control the amount of correction applied.
The present invention describes a method for forming a color-transformation function which will transform the colors in the input color space into the output color space in such a way that the saturated colors on the input device are transformed to the saturated colors on the output device, with the added flexibility of being able to make local adjustments to the color reproduction to obtain results which are optimum for an application. Thus the benefits of the above approach, using three one-dimensional tables to maximize the color saturation, are captured while taking advantage of the flexibility inherent to a digital imaging system.